// 从环境变量中获取 BASE_URL
import {storeToRefs} from "pinia";
import { ref } from 'vue';
import {getVepPageData} from "api/services/vepService";
import request from '@/utils/request';
import type { VepParameter } from 'api/types/vep';
import {
    useVepCulturalServiceStore,
    useVepSupplyServiceStore,
    useVepRegulationServiceStore,
    useVepDataStore
} from "@/stores/vep";

const vepSupplyServiceStore = useVepSupplyServiceStore();
const vepRegulationServiceStore = useVepRegulationServiceStore();
const vepCulturalServiceStore = useVepCulturalServiceStore();
const vepDataStore = useVepDataStore();

export const {
    outVepSupplyService
    , inProcessProfit
} = storeToRefs(vepSupplyServiceStore);

export const {
    outVepRegulationService,
    // outVepRegulationAdjust调节加调整值

    inProjectLandArea,

    regionRegulationService,

} = storeToRefs(vepRegulationServiceStore);

export const {
    outVepCulturalService,
    inPropertyProfit,

} = storeToRefs(vepCulturalServiceStore);

export const {
    vepName,
    vepValue,
    vepRegion,
    vepExcelName
} = storeToRefs(vepDataStore);

import gexianshan01 from '@/assets/img/vepShow/葛1.webp';
import gexianshan02 from '@/assets/img/vepShow/葛2.webp';
import mingqingguzhen from '@/assets/img/vepShow/河口古镇1.jpg';
import hehongcha from '@/assets/img/vepShow/河红茶1.png';
import hongyayu from '@/assets/img/vepShow/红芽芋1.jpg';

import * as XLSX from "xlsx";

// 轮播图数据 控制有多少个项目
export const carouselItemsData = [
    mingqingguzhen,
    hongyayu,
    hehongcha,
    gexianshan01,
    gexianshan02,
];

const prefix_para = '/carousel-items';

// 表格数据
export type EcoData = {
    name: string;
    area: number;             // 面积（平方公里）
    vepValue: number;        // VEP（亿元）
    // adjustedValue: number;   // 调整值（万元）
    materialSupply: number;  // 物质供给（万元）
    regulatingService: number; // 调节服务（万元）
    culturalService: number; // 文化服务（万元）
};


// 使用 ref 保持响应式
export const tableData = ref<EcoData[]>([]);

// 从接口获取数据并更新 tableData
// export const loadVepPageData = async () => {
//     try {
//         const response = await getVepPageData();
//         tableData.value = response.data;
//         console.log('✅ loadVepPageData-vepShowTable接口数据加载成功:', tableData.value);
//         return response.data;
//     } catch (error) {
//         console.error('❌ 获取数据失败:', error);
//         throw error;
//     }
// };
// loadVepPageData();


export const formatValue = (value: number): string => {
    if (value >= 100000000) {
        return `${(value / 100000000).toFixed(2)}亿元`;
    } else if (value >= 10000) {
        return `${(value / 10000).toFixed(2)}亿元`;
    } else {
        return `${value.toFixed(2)}万元`;
    }
};


// 将数组转换为以数字索引为键的对象
export const indexedData = tableData.value.reduce((acc, currentValue, index) => {
    acc[index] = currentValue;
    return acc;
}, {});

// vep下载表格
// const column1 = vepRegion.value + 'VEP项目';
const column2 = '面积（平方公里）';
let column3 = 'VEP' + '(万元)';
let column4 = '调整值' + '(万元)';
let column5 = '物质供给' + '(万元)';
let column6 = '调节服务' + '(万元)';
let column7 = '文化服务' + '(万元)';

// 判断是否需要转换为亿元的函数
export const formatToBillion = (value: number) => {
    return value > 10000 ? value / 10000 : value;
}

// 判断是否需要修改列标题的函数
export const updateColumnTitle = (value: number, columnTitle: string) => {

    return value > 10000 ? columnTitle.replace('(万元)', '(亿元)') : columnTitle;
}

export const vepExportToExcel = () => {
    // 数据定义
    // console.log("excelName",excelName.value)
    const data = [
        [vepRegion.value + 'VEP项目',
            column2,
            updateColumnTitle(vepValue.value, column3),
            // updateColumnTitle(outVepAdjustmentValues.value, column4),
            updateColumnTitle(outVepSupplyService.value, column5),
            updateColumnTitle(outVepRegulationService.value, column6),
            updateColumnTitle(outVepCulturalService.value, column7)
        ],
        [
            vepName.value,
            inProjectLandArea.value,
            formatToBillion(vepValue.value),
            // formatToBillion(outVepAdjustmentValues.value),
            formatToBillion(outVepSupplyService.value),
            formatToBillion(outVepRegulationService.value),
            formatToBillion(outVepCulturalService.value)
        ]
    ];

    // 创建工作表
    const ws = XLSX.utils.aoa_to_sheet(data);

    // 设置合并单元格
    // ws['!merges'] = [
    //     {s: {r: 1, c: 0}, e: {r: 3, c: 0}},
    // ];

    // 创建工作簿
    const wb = XLSX.utils.book_new();
    XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');

    // 导出文件
    const xlsxName = vepRegion.value + vepName.value + "-VEP计算结果.xlsx"
    XLSX.writeFile(wb, xlsxName);
};


// // 保存vep的输入数据
// export async function saveInputVEP() {
//     try {
//         // 定义要发送的数据
//         const data = {
//             vepName: vepName.value,
//             inAnnualProductValue: inAnnualProductValue.value,
//             inAnnualTotalCost: inAnnualTotalCost.value,
//             inProcessProfit: inProcessProfit.value,
//             inCleanEnergyGeneration: inCleanEnergyGeneration.value,
//             inElectricityPrice: inElectricityPrice.value,
//             inTourismRevenue: inTourismRevenue.value,
//             inHotelRoomCount: inHotelRoomCount.value,
//             inHotelPrice: inHotelPrice.value,
//             inAnnualOccupancy: inAnnualOccupancy.value,
//             inPropertyProfit: inPropertyProfit.value,
//             inDailyTraffic: inDailyTraffic.value,
//             inTourismHealthProfit: inTourismHealthProfit.value,
//             inProjectLandArea: inProjectLandArea.value,
//
//             inSoilCarbonStorage: inSoilCarbonStorage.value,
//             inVegetationCarbonStorage: inVegetationCarbonStorage.value,
//             inTotalNitrogen: inTotalNitrogen.value,
//             inTotalPhosphorus: inTotalPhosphorus.value,
//             inAmmoniaNitrogen: inAmmoniaNitrogen.value,
//             inBod5: inBod5.value,
//             inCodCr: inCodCr.value,
//             vepTestValue: vepTestValue.value,
//
//         };
//         console.log("saveInputVEP要发送的数据：", data);
//
//         // 发送POST请求
//         const response = await axios.post(`${BASE_URL}/vepInputData`, data);
//
//         // 处理响应
//         if (response.status === 201) {
//             console.log(response.data.message);
//
//         } else if (response.status === 200) {
//             console.log(response.data.message);
//             // 这里可以添加一个方法来通知用户数据创建失败
//         } else {
//             console.log(response.data.message);
//         }
//         return response.status;
//     } catch (error) {
//         // 处理请求错误
//         console.error('Error submitting vep data:', error);
//         // 这里可以添加一个方法来通知用户请求错误
//     }
// }
//
//
// export async function getInputVEP(vepName: any) {
//     try {
//         // 定义查询参数
//         const params = {
//             vepName: vepName,
//         };
//         const response = await axios.get(`${BASE_URL}/vepInputData`, {params});
//
//         // 处理响应
//         if (response.status === 203) {
//             // 处理错误情况
//             // console.error(response.data.error);
//             console.log(vepName, '该项目未保存过参数！');
//             vepDataStore.resetVEP();
//             // 这里可以添加一个方法来通知用户错误信息
//         } else if (response.status === 200) {
//             const data = response.data;
//             console.log("获取VEP的测试data", data.vepName,data);
//             inAnnualProductValue.value = data.inAnnualProductValue || 0;
//             inAnnualTotalCost.value = data.inAnnualTotalCost || 0;
//             inProcessProfit.value = data.inProcessProfit || 0;
//             inCleanEnergyGeneration.value = data.inCleanEnergyGeneration || 0;
//             inElectricityPrice.value = data.inElectricityPrice || 0;
//             inTourismRevenue.value = data.inTourismRevenue || 0;
//             inHotelRoomCount.value = data.inHotelRoomCount || 0;
//             inHotelPrice.value = data.inHotelPrice || 0;
//             inAnnualOccupancy.value = data.inAnnualOccupancy || 0;
//             inPropertyProfit.value = data.inPropertyProfit || 0;
//             inDailyTraffic.value = data.inDailyTraffic || 0;
//             inTourismHealthProfit.value = data.inTourismHealthProfit || 0;
//             inProjectLandArea.value = data.inProjectLandArea || 0;
//
//             inSoilCarbonStorage.value = data.inSoilCarbonStorage || 0;
//             inVegetationCarbonStorage.value = data.inVegetationCarbonStorage || 0;
//             inTotalNitrogen.value = data.inTotalNitrogen || 0;
//             inTotalPhosphorus.value = data.inTotalPhosphorus || 0;
//             inAmmoniaNitrogen.value = data.inAmmoniaNitrogen || 0;
//             inBod5.value = data.inBod5 || 0;
//             inCodCr.value = data.inCodCr || 0;
//             vepTestValue.value = data.vepTestValue || 0;
//             return response.data; // 返回数据供调用者使用
//         }
//         // return response.status;
//     } catch (error) {
//         // 处理请求错误
//         // console.error('Error fetching data:', error);
//         console.log('response.data.error2');
//         // 这里可以添加一个方法来通知用户请求错误
//         throw error; // 抛出错误供调用者处理
//     }
// }
//
// // 获取vep的所有的名字
// export async function getVEPName() {
//     try {
//         const response = await axios.get(`${BASE_URL}/vepName`,);
//
//         // 处理响应
//         if (response.status === 203) {
//             console.error(response.data.message);
//         } else if (response.status === 200) {
//             return response.data; // 返回数据供调用者使用
//         }
//     } catch (error) {
//         console.log('response.data.error2');
//         throw error; // 抛出错误供调用者处理
//     }
// }
//
//
// // 更新地区选择框数据
//
// export async function getVEPData() {
//     console.log('vepRegion',vepRegion.value);
//     if(vepRegion.value.length != 0) {
//         console.log('if-vepRegion',vepRegion.value);
//         try {
//             // 获取当前日期
//             const currentDate = new Date();
//             const vepYear = currentDate.getFullYear() - 1;
//             // console.log("vepYear", vepYear)
//             const response = await axios.get(`${BASE_URL}/vep`, {
//                 params: {
//                     vepRegion: vepRegion.value[0],
//                     vepYear: vepYear
//                 }
//             });
//             const data = response.data;
//             console.log("获取VEP的data", data);
//             regionArea.value = data.regionArea || 0;
//             regionRegulationService.value = data.regionRegulationService || 0;
//             regionWaterPurificationGep.value = data.regionWaterPurificationGep || 0;
//             avgSoilCarbonStorage.value = data.avgSoilCarbonStorage || 0;
//             avgVegetationCarbonStorage.value = data.avgVegetationCarbonStorage || 0;
//         } catch (error) {
//             console.error('Error fetching data:', error);
//             // Handle error appropriately
//         }
//     }
//
// }

export const formatValueWithUnit = (value: number): { formattedValue: number, unit: string } => {
    console.log("formatValueWithUnit",value)
    if (value >= 10000) {
        return {
            formattedValue: value / 10000,
            unit: '亿元'
        };
    } else {
        return {
            formattedValue: value,
            unit: '万元'
        };
    }
};


// export const tableData: EcoData[] = [
//     {
//         name: "葛仙村国际度假区-1期",
//         area: 0.43355,            // 使用数值类型而非字符串
//         vepValue: 123456.026,        // 使用数值类型而非字符串
//         materialSupply: 0.643,  // 使用数值类型而非字符串
//         regulatingService: 0.0296, // 使用数值类型而非字符串
//         culturalService: 0.354   // 使用数值类型而非字符串
//     }
//     ,
//     {
//         name: "葛仙村国际度假区-2期",
//         area: 0.667,            // 使用数值类型而非字符串
//         vepValue: 1.026,        // 使用数值类型而非字符串
//         materialSupply: 0.643,  // 使用数值类型而非字符串
//         regulatingService: 0.0296, // 使用数值类型而非字符串
//         culturalService: 0.354   // 使用数值类型而非字符串
//     }
//     ,
//     {
//         name: "明清古镇",
//         area:0.2691,            // 使用数值类型而非字符串
//         vepValue: 1.026,        // 使用数值类型而非字符串
//         materialSupply: 0.643,  // 使用数值类型而非字符串
//         regulatingService: 0.0296, // 使用数值类型而非字符串
//         culturalService: 0.354   // 使用数值类型而非字符串
//     }
//     ,
//     {
//         name: "河红茶",
//         area: 5.35934,            // 使用数值类型而非字符串
//         vepValue: 1.026,        // 使用数值类型而非字符串
//         materialSupply: 0.643,  // 使用数值类型而非字符串
//         regulatingService: 0.0296, // 使用数值类型而非字符串
//         culturalService: 0.354   // 使用数值类型而非字符串
//     }    ,
//     {
//         name: "红芽芋",
//         area: 3.17492,            // 使用数值类型而非字符串
//         vepValue: 1.026,        // 使用数值类型而非字符串
//         materialSupply: 0.643,  // 使用数值类型而非字符串
//         regulatingService: 0.0296, // 使用数值类型而非字符串
//         culturalService: 0.354   // 使用数值类型而非字符串
//     }
//     // 你可以继续添加更多的对象到这个数组中
// ];